package br.nsi.ardae.banco_teste;

import java.sql.*;
import java.util.*;

public class SimulaTempo {

	private static SimulaTempo unique = null;
	private static final int qtdTempo = 800;
	
	private static List<String> listaDiaDasSemanas;
	
	private SimulaTempo(){
		createListaDiasDaSemana();
	}
	
	public static SimulaTempo newSimulaTempo(){
		if(SimulaTempo.unique == null) SimulaTempo.unique = new SimulaTempo();
		
		return SimulaTempo.unique;
	}
	
	public static int getQtdTempo(){
		return SimulaTempo.qtdTempo;
	}
	
	private void createListaDiasDaSemana(){
		SimulaTempo.listaDiaDasSemanas = new ArrayList<String>();
		
		SimulaTempo.listaDiaDasSemanas.add("domingo");
		SimulaTempo.listaDiaDasSemanas.add("segunda");
		SimulaTempo.listaDiaDasSemanas.add("ter�a");
		SimulaTempo.listaDiaDasSemanas.add("quarta");
		SimulaTempo.listaDiaDasSemanas.add("quinta");
		SimulaTempo.listaDiaDasSemanas.add("sexta");
		SimulaTempo.listaDiaDasSemanas.add("sabado");
	}
	
	private String getDiaDaSemana(){
		return (String) this.listaDiaDasSemanas.get((int)(100*Math.random() % 7));
	}
	
	private int getDia(){
		return 1+(int)(100*Math.random() % 30);
	}
	
	private int getMes(){
		return 1+(int)(100*Math.random() % 12);
	}
	private int getAno(){
		return (int)(100*Math.random());
	}
	
	public void inserirTempo(Connection conexao) throws SQLException{
		int dia = this.getDia();
		int mes = this.getMes();
		int ano = 1908 + this.getAno();
		
		String data = String.valueOf(dia)+"/"+String.valueOf(mes)+"/"+String.valueOf(ano);
		
		int bimestre = 0;
		int trimestre = 0;
		int semestre = 0;
		switch (mes){
			case 1: bimestre=1;trimestre=1;semestre=1; break;
			case 2: bimestre=1;trimestre=1;semestre=1;break;
			case 3: bimestre=2;trimestre=1;semestre=1;break;
			case 4: bimestre=2;trimestre=2;semestre=1;break;
			case 5: bimestre=3;trimestre=2;semestre=1;break;
			case 6: bimestre=3;trimestre=2;semestre=1;break;
			case 7: bimestre=4;trimestre=3;semestre=2;break;
			case 8: bimestre=4;trimestre=3;semestre=2;break;
			case 9: bimestre=5;trimestre=3;semestre=2;break;
			case 10: bimestre=5;trimestre=4;semestre=2;break;
			case 11: bimestre=6;trimestre=4;semestre=2;break;
			case 12: bimestre=6;trimestre=4;semestre=2;break;
			}
		
		String diaDaSemana = getDiaDaSemana();
		
		System.out.println("dia: "+dia+" mes: "+mes+" ano: "+ano+" data: "+data+" bimestre: "+bimestre+" trimestre: "+trimestre+" semestre: "+semestre+" diaDaSemana:"+diaDaSemana);
		
		PreparedStatement pstmt = conexao.prepareStatement("Insert into tempo (dia, mes, ano, data, bimestre, trimestre, semestre, dia_da_semana) values (?,?,?,?,?,?,?,?)");
		pstmt.setInt(1, dia);
		pstmt.setInt(2, mes);
		pstmt.setInt(3, ano);
		pstmt.setString(4, data);
		pstmt.setInt(5, bimestre);
		pstmt.setInt(6, trimestre);
		pstmt.setInt(7, semestre);
		pstmt.setString(8, diaDaSemana);
		pstmt.executeUpdate();
		pstmt.close();
	}
}
